#pragma once
#include "ISpecimen.h"
#include "Point.h"
#include "Random.h"

class TriangleSpecimen:public ISpecimen
{
public:
	TriangleSpecimen(Point *a, Point *b, Point *c, Random *generator);
	virtual ~TriangleSpecimen(void);

	virtual ISpecimen* Crossover (ISpecimen *other);
	virtual ISpecimen* Mutate();
	virtual bool operator <(ISpecimen &rhs);
	
	virtual std::string ToString();

	double computeCos(Point *apex, Point *handA, Point *handB);
	double computeMinCos(TriangleSpecimen &tr);
private:
	Point *m_a;
	Point *m_b;
	Point *m_c;
	Random *m_generator;
};
